home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Linux / Kubuntu 8.10 / kubuntu-8.10-desktop-i386.iso / casper / filesystem.squashfs / usr / share / acpi-support / state-funcs < prev    next >
Text File  |  2008-10-14  |  3KB  |  110 lines

  1. #!/bin/sh
  2. # Paul Sladen, 2006-03-28, 2007-03-26
  3. # Library functions to check/change status of wireless
  4.  
  5. # Return 0 if there is, allowing you to write   if isAnyWirelessPoweredOn; then ...
  6. isAnyWirelessPoweredOn()
  7. {
  8.     for DEVICE in /sys/class/net/* ; do
  9.     if [ -d $DEVICE/wireless ]; then
  10.         # Hurray for stable interfaces... now the rfkill is scarcely
  11.         # associated with the network device at all (!)
  12.         for RFKILL in $DEVICE/device/rfkill/rfkill*/state; do
  13.         if [ -r "$RFKILL" ] && [ "$(cat "$RFKILL")" -eq 1 ]
  14.         then
  15.             return 0
  16.         fi
  17.         done
  18.         # if any of the wireless devices are turned on then return success
  19.         if [ -r $DEVICE/device/power/state ] && [ "`cat $DEVICE/device/power/state`" -eq 0 ]
  20.         then
  21.         return 0
  22.         fi
  23.         if [ -r $DEVICE/device/rf_kill ] && [ "`cat $DEVICE/device/rf_kill`" -eq 0 ]
  24.         then
  25.         return 0
  26.         fi
  27.     fi
  28.     done
  29.  
  30.     # otherwise return failure
  31.     return 1
  32. }
  33.  
  34. # Takes no parameters, toggles all wireless devices.
  35. # TODO: Should possible toggle all wireless devices to the state of the first one.
  36. # Attempts to use 'rf_kill' first, and then tries 'power/state', though that
  37. # will fail on >=2.6.18 kernels since upstream removed the functionality...
  38. toggleAllWirelessStates()
  39. {
  40.     for DEVICE in /sys/class/net/* ; do
  41.     if [ -d $DEVICE/wireless ] ; then
  42.         # $DEVICE is a wireless device.
  43.  
  44.         FOUND=
  45.         # Yes, that's right... the new interface reverses the truth values.
  46.         ON=1
  47.         OFF=0
  48.         for CONTROL in $DEVICE/device/rfkill/rfkill*/state; do
  49.         if [ -w "$CONTROL" ]; then
  50.             FOUND=1
  51.  
  52.             if [ "$(cat "$CONTROL")" = "$ON" ] ; then
  53.             # It's powered on. Switch it off.
  54.             echo -n "$OFF" > "$CONTROL"
  55.             else
  56.             # It's powered off. Switch it on.
  57.             echo -n "$ON" > "$CONTROL"
  58.             fi
  59.         fi
  60.         done
  61.         # it might be safe to assume that a device only supports one
  62.         # interface at a time; but just in case, we short-circuit
  63.         # here to avoid toggling the power twice
  64.         if [ -n "$FOUND" ]; then
  65.         continue
  66.         fi
  67.  
  68.         ON=0
  69.         OFF=1  # 1 for rf_kill, 2 for power/state
  70.         for CONTROL in $DEVICE/device/rf_kill $DEVICE/device/power/state ; do
  71.         if [ -w $CONTROL ] ; then
  72.             # We have a way of controlling the device, lets try
  73.             if [ "`cat $CONTROL`" = 0 ] ; then
  74.             # It's powered on. Switch it off.
  75.             if echo -n $OFF > $CONTROL ; then 
  76.                 break
  77.             else
  78.                 OFF=2 # for power/state, second time around
  79.             fi
  80.             else
  81.             # It's powered off. Switch it on.
  82.             if echo -n $ON > $CONTROL ; then
  83.                 break
  84.             fi
  85.             fi
  86.         fi
  87.         done
  88.     fi
  89.     done
  90. }
  91.  
  92. # Pass '1' to blink suspending LED and '0' to stop LED
  93. setLEDThinkpadSuspending()
  94. {
  95.     action=`test "$1" -ne 0 && echo blink || echo off`
  96.     test -w /proc/acpi/ibm/led && echo -n 7 "$action" > /proc/acpi/ibm/led
  97. }
  98.  
  99. # Pass '1' to light LED and '0' to dark LED
  100. setLEDAsusWireless()
  101. {
  102.     action=`test "$1" -ne 0 && echo 1 || echo 0`
  103.  
  104.     # (Older) asus-acpi module
  105.     test -w /proc/acpi/asus/wled && echo -n "$action" > /proc/acpi/asus/wled
  106.  
  107.     # (Newer) asus-laptop module
  108.     test -w /sys/devices/platform/asus-laptop/wlan && echo -n "$action" > /sys/devices/platform/asus-laptop/wlan
  109. }
  110.